import java.util.*;

public class Test01 {

    //给你一个整数数组 nums 。如果任一值在数组中出现 至少两次 ，返回 true ；如果数组中每个元素互不相同，返回 false
    public boolean containsDuplicate(int[] nums) {
        HashSet<Integer> set = new HashSet<>();
        for (int i = 0; i < nums.length; i++) {
            if (!set.add(nums[i])) {
                return true;
            }
        }
        return false;
    }

    //给定一个非空整数数组，除了某个元素只出现一次以外，其余每个元素均出现两次。找出那个只出现了一次的元素
    public int singleNumber(int[] nums) {
        HashSet<Integer> hashSet = new HashSet<>();
        for (int n: nums) {
            if (!hashSet.add(n)){
                hashSet.remove(n);
            }
        }
        return (int) hashSet.toArray()[0];
    }

    // 两个数组的交集
    public int[] intersect(int[] nums1, int[] nums2) {
        List<Integer> list = new ArrayList<>();
        HashMap<Integer, Integer> map = new HashMap<>();

        //先把数组nums1的所有元素都存放到map中，其中key是数组中
        //的元素，value是这个元素出现在数组中的次数
        for (int i : nums1) {
            map.put(i, map.getOrDefault(i, 0) + 1);
        }

        //然后再遍历nums2数组，查看map中是否包含nums2的元素，如果包含，
        //就把当前值加入到集合list中，然后再把对应的value值减1。
        for (int i : nums2) {
            if (map.getOrDefault(i,0)>0){
                list.add(i);
                map.put(i,map.get(i)-1);
            }
        }
        //把集合list转化为数组
        int[] arr = new int[list.size()];
        for (int i = 0; i < list.size(); i++) {
            arr[i] = list.get(i);
        }
        return arr;

    }

    public static int[] plusOne(int[] digits) {
        int len = digits.length;
        for (int i = len-1; i >=0 ; i--) {
            if (digits[i] != 9){
                // 如果数组当前元素不等于9,直接加1
                // 然后直接返回
                digits[i]++;
                return digits;
            } else {
                // 当前元素等于9 的话,加一之后会变为0
                // 然后循环判断上一位 上一位要是不等于9的话直接就会得到这个进位 然后返回
                digits[i] = 0;
            }
        }
        // 到这里 说明数组元素都是9
        // 只需要把数组元素加 1 , 然后把第一位改为 1 即可
        int[] arr = new int[len+1];
        arr[0] = 1;
        return arr;
    }

    public static void main(String[] args) {
        int[] arr = {9,9,9};
        int[] arr1 = plusOne(arr);
        for (int i: arr1) {
            System.out.println(i);
        }
    }
}
